package com.icesoft.wechat.utils.decode;

import cn.hutool.core.util.XmlUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Node;

@SuppressWarnings("unused")
public class WxXmlUtil {
	public static void main(String[] args) {
		String xml = "<xml>\n" +
				"  <ToUserName><![CDATA[toUser]]></ToUserName>\n" +
				"  <FromUserName><![CDATA[FromUser]]></FromUserName>\n" +
				"  <CreateTime>123456789</CreateTime>\n" +
				"  <MsgType><![CDATA[event]]></MsgType>\n" +
				"  <Event><![CDATA[subscribe]]></Event>\n" +
				"</xml>";
		//CreateTime
		String str = getSingleText(xml, "CreateTime");
		System.out.println("str = " + str);
	}


	private static Document getDocument(String xml) {
		return XmlUtil.parseXml(xml);
	}

	public static String getSingleText(String xml, String tag) {
		/**
		 * <xml>
		 *   <ToUserName><![CDATA[toUser]]></ToUserName>
		 *   <FromUserName><![CDATA[FromUser]]></FromUserName>
		 *   <CreateTime>123456789</CreateTime>
		 *   <MsgType><![CDATA[event]]></MsgType>
		 *   <Event><![CDATA[subscribe]]></Event>
		 * </xml>
		 */
		Document document = getDocument(xml);
		if (document == null) {
			return null;
		}
		Node n = XmlUtil.getElement(document.getDocumentElement(), tag);
		return n.getTextContent();
	}

	/**
	 * 生成xml文本消息
	 *
	 * @param ToUserName   接收方帐号（收到的OpenID）
	 * @param FromUserName 开发者微信号
	 * @param CreateTime   消息创建时间 （整型）
	 * @param Content      回复的消息内容（换行：在content中能够换行，微信客户端就支持换行显示）
	 * @return 生成的xml字符串
	 */
	public static String generateTextMsg(String ToUserName, String FromUserName, String CreateTime, String Content) {
		String format = "<xml>\n"
				+ "<ToUserName><![CDATA[%1$s]]></ToUserName>\n"
				+ "<FromUserName><![CDATA[%2$s]]></FromUserName>\n"
				+ "<CreateTime><![CDATA[%3$s]]></CreateTime>\n"
				+ "<MsgType><![CDATA[text]]</MsgType>\n"
				+ "<Content><![CDATA[%4$s]]></Content>\n"
				+ "</xml>";
		return String.format(format, ToUserName, FromUserName, CreateTime, Content);
	}
}
